package main

import (
	"fmt"
	"sort"
)

/**
执行用时：8 ms, 在所有 Go 提交中击败了94.47%的用户
内存消耗：4.5 MB, 在所有 Go 提交中击败了46.61%的用户
 */
func merge(a [][]int) [][]int {
	sort.Slice(a, func(i, j int) bool {
		return a[i][0] < a[j][0]
	})

	res := [][]int{}
	l, r := a[0][0], a[0][1]
	for i := 1; i < len(a); i++ {
		if a[i][0] > r {
			res = append(res, []int{l, r})
			l, r = a[i][0], a[i][1]
		} else {
			r = max(r, a[i][1])
		}
	}
	res = append(res, []int{l, r})
	return res
}

// 求最大值
func max(a int, b int) int {
	if a > b {
		return a
	} else {
		return b
	}
}

func main() {
	intervals := [][]int{{1, 3}, {2, 6}, {8, 10}, {15, 18}}
	fmt.Println(merge(intervals))
}
